package com.cskaoyan.javase.oop1._1basic;

/**
 * 创建对象的细节问题:
 *      1.成员变量是属于对象的,必须要创建对象才能够去访问成员变量
 *          更具体来说,成员变量类似于数组中的元素
 *          它直接存储在对象当中,所以它具有默认初始化,具有默认值
 *          不同对象,有各自独立的成员变量,不会互相影响
 *
 *      2.成员方法也是属于对象的,必须要创建对象才能够去调用成员方法
 *      3.不同对象，访问类中同一个成员变量和成员方法的结果完全可能是不同的！！
 *          成员变量由于取值不同,所以结果不同是很正常的
 *          但是如何理解不同对象,成员方法的调用结果不同呢?
 *          成员变量在类体中,所有的成员方法都可以访问到,所以它的作用域在整个类中生效(不同于局部变量)
 *          而不同对象,成员变量的取值完全可能是不同的
 *       4.直接输出对象名
 *          和数组直接输出数组名是一样，默认情况下，直接打印对象名得到的是：
 *          该类的全限定类名 + "@" + 十六进制的地址值
 *          但是和数组不同的是,打印对象名的结果是可以修改的
 *
 * @since 15:46
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.age = 8;
        System.out.println(d.age);
        d.shout();

        Dog d2 = new Dog();
        System.out.println(d2.age);
        d2.shout();

        System.out.println(d);
        System.out.println(d2);
    }
}

class Dog {
    // 属性
    int age;
    String name;
    double price;

    // 行为
    public void shout() {
        System.out.println(age + "岁的,狗子在叫~");
    }
}